package com.example.graduationdesign.service;

import com.example.graduationdesign.pojo.dao.ArticleDao;
import com.example.graduationdesign.pojo.dao.UserDao;
import com.example.graduationdesign.pojo.dto.*;
import com.example.graduationdesign.pojo.vo.Jingdian;
import com.example.graduationdesign.pojo.vo.UserVo;
import com.example.graduationdesign.pojo.vo.Yuding;

import javax.mail.MessagingException;
import java.util.List;

public interface CommonService {

    /**
     * 用于实现用户登录的操作
     * @param userLoginDto
     * @return
     */
    UserVo login(UserLoginDto userLoginDto);

    /**
     * 用于实现向用户电子邮箱发送email的功能
     * @param email
     * @return
     */
    String sendEmail(String email);

    /**
     * 用于实现用户在注册时对邮箱正确性的验证
     * @param email
     * @return
     */
    String sendRegisterEmail(String email);


    /**
     * 用于实现用户在修改邮箱时发送验证码的操作
     * @param email
     * @return
     */
    String sendModifyEmail(String email,String newEmail);


    /**
     * 用于实现用户忘记密码的功能
     * @param forgetPwdDto
     */
    void forgetPassword(ForgetPwdDto forgetPwdDto);


    /**
     * 用于实现用户注册的功能
     * @param registerDto
     * @return
     */
    Long RegisterView(RegisterDto registerDto);

    /**
     * 用于用户退出登录的操作
     */
    void logout();


    /**
     * 用于实现头像上传的功能
     * @param picturePath
     * @param userId
     * @return
     */
    String uploadPicture(String picturePath,Long userId);


    /**
     * 用于实现对用户基本信息的修改
     * @param userVo
     * @return
     */
    Void UpdateUserInfomation(UserVo userVo);

    /**
     * 用于用户修改邮箱
     * @param modifyEmailDto
     * @return
     */
    Void UpdateUserEmailInfomation(ModifyEmailDto modifyEmailDto);
    /**
     * 用于修改管理员的个人信息
     * @param userVo
     * @return
     */
    Void UpdateAdminInfomation(UserVo userVo);


    /**
     * 用于获取文章的信息
     * @return
     */
    List<ArticleDao> GetArticle();

    /**
     * 用于实现获取用户地理位置的功能
     * @param userId
     * @param city
     * @return
     */
    Void UpdateCity(Long userId,String city);


    /**
     * 利用用户在使用邮箱登录时的数据进行查找出用户的编码
     * @param email
     * @return
     */
    Long GetAccount(String email);


    DataList GetData(String startDate,String endDate);

    List<Jingdian> GetJingdianData();
}
